#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 100 // 定义顺序表的最大容量

typedef struct {
    int data[MAX_SIZE];
    int length;
} SeqList;

// 初始化顺序表
void initList(SeqList *L, int n) {
    L->length = n;
    printf("请输入顺序表各元素的值, 以空格为间隔：\n");
    for (int i = 0; i < n; i++) {
        scanf("%d", &L->data[i]);
    }
}

// 输出顺序表中的所有元素
void printList(SeqList L) {
    printf("顺序表中的元素为: \n");
    for (int i = 0; i < L.length; i++) {
        printf("%d ", L.data[i]);
    }
    printf("\n");
}

// 插入元素到指定位置
int insertElement(SeqList *L, int index, int value) {
    if (index < 0 || index > L->length) {
        printf("插入位置不合法\n");
        return 0;
    }
    if (L->length >= MAX_SIZE) {
        printf("顺序表已满，无法插入\n");
        return 0;
    }
    for (int i = L->length; i > index; i--) {
        L->data[i] = L->data[i - 1];
    }
    L->data[index] = value;
    L->length++;
    return 1;
}

// 删除指定位置的元素
int deleteElement(SeqList *L, int index) {
    if (index < 0 || index >= L->length) {
        printf("删除位置不合法\n");
        return 0;
    }
    int deletedValue = L->data[index];
    for (int i = index; i < L->length - 1; i++) {
        L->data[i] = L->data[i + 1];
    }
    L->length--;
    return deletedValue;
}

// 查找元素在顺序表中的位置
int findElement(SeqList L, int value) {
    for (int i = 0; i < L.length; i++) {
        if (L.data[i] == value) {
            return i; // 返回元素的位置
        }
    }
    return -1; // 如果未找到，返回-1
}

int main() {
    SeqList L;
    int n, position, value, deletePosition, searchValue, foundIndex;

    // 获取顺序表元素的个数
    printf("请输入顺序表元素的个数: \n");
    scanf("%d", &n);

    // 初始化顺序表
    initList(&L, n);
    printList(L);

    // 插入元素
    printf("请输入要插入元素的位置及元素值，以空格为间隔：\n");
    scanf("%d %d", &position, &value);
    if (insertElement(&L, position, value)) {
        printf("插入后");
        printList(L);
    }

    // 删除元素
    printf("请输入要删除元素的位置：\n");
    scanf("%d", &deletePosition);
    int deletedValue = deleteElement(&L, deletePosition);
    if (deletedValue != 0) {
        printf("所删除的元素为：%d\n", deletedValue);
        printf("删除后");
        printList(L);
    }

    // 查找元素
    printf("请输入要查找的元素值：");
    scanf("%d", &searchValue);
    foundIndex = findElement(L, searchValue);
    if (foundIndex != -1) {
        printf("元素 %d 在顺序表中的位置为：%d\n", searchValue, foundIndex);
    } else {
        printf("元素 %d 不在顺序表中\n", searchValue);
    }

    return 0;
}